using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Events;
using System.IO;
namespace softDemo.API
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            //  获取配置文件
            var config = new ConfigurationBuilder()
                  .SetBasePath(Directory.GetCurrentDirectory())
                  .AddJsonFile("appsettings.json",
                  optional: true,
                  reloadOnChange: true)
                  .AddJsonFile($"appsettings.{environment}.json",
                  optional: true,
                  reloadOnChange: true)
                  .Build();
            // 创建日志记录器
            // 注意：ReadFrom.Configuration(config)是读取配置文件config中的Serilog节点
            Log.Logger = new LoggerConfiguration()
                   .ReadFrom.Configuration(config)
                   .CreateLogger();
            //触发日记记录器
            Log.Information("项目启动");

            CreateHostBuilder(args).Build().Run();

            // 关闭日记记录器
            Log.CloseAndFlush();
            // 注意：这个记录器不仅配置了控制台接收器，也配置了数据库接收器。
            // 所以该记录器不仅会将日志输出到控制台，也会输出到数据库中。
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog()   //使用Serilog日志系统
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}
